{
  "guild": {
    "id": "1361349522684510449",
    "name": "wafer.space Community",
    "iconUrl": "2026-07_media/fb143eaa45770cbb40493d09b625e98b-09FD1.png"
  },
  "channel": {
    "id": "1423348662318272592",
    "type": "GuildTextChat",
    "categoryId": "1409664731760955403",
    "category": "\uD83D\uDCD0 - Designing",
    "name": "\uD83D\uDCDD-project-template",
    "topic": "[template-github](https://github.com/wafer-space/gf180mcu-project-template)"
  },
  "dateRange": {
    "after": "2026-06-30T23:59:59.999+00:00",
    "before": "2026-08-01T00:00:00+00:00"
  },
  "exportedAt": "2026-07-13T07:56:30.2952769+00:00",
  "messages": [
    {
      "id": "1521791559832567818",
      "type": "Default",
      "timestamp": "2026-07-01T08:16:21.384+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "Also having CTS done separately on different blocks is dangerous as the clock tree depth may be different between blocks causing unexpected hold/setup violations for signals going between different blocks.\nIf I'm not mistaken, LibreLane supports P&R on subblocks separately but still CTS on top block.",
      "author": {
        "id": "728516105680846892",
        "name": "chips4makers",
        "discriminator": "0000",
        "nickname": "Chips4Makers aka Staf Verhaegen",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-07_media/2649a6faac7843086b3d82b1d8f657a3-81998.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1521792356339290152",
      "type": "Default",
      "timestamp": "2026-07-01T08:19:31.286+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "I know that CTS recently(-ish) got the ability to place macro at different depth of the CTS depending on the min/max clock delay specified in the liberty file of the macros/sub-blocks.  ( https://github.com/The-OpenROAD-Project/OpenROAD/issues/3759 )",
      "author": {
        "id": "596068704471482370",
        "name": "246tnt",
        "discriminator": "0000",
        "nickname": "tnt",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-07_media/88d17af9d19ab43565b0c46751ef7d12-DFEE5.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1521794674665459752",
      "type": "Default",
      "timestamp": "2026-07-01T08:28:44.018+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "Cool, thanks for all the tips. I guess I will have a play around with this and see what I come up with. \uD83D\uDE42",
      "author": {
        "id": "290925586266980352",
        "name": "osvel",
        "discriminator": "0000",
        "nickname": "Olle",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-07_media/0a78dc08258cf53bd8ec52dd3e14ef57-26F82.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": [
        {
          "id": "",
          "name": "\uD83D\uDE42",
          "code": "slight_smile",
          "isAnimated": false,
          "imageUrl": "2026-07_media/1f642-83E8A.svg"
        }
      ]
    },
    {
      "id": "1521796270635880492",
      "type": "Default",
      "timestamp": "2026-07-01T08:35:04.527+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "But TBH I'm not sure how common it is to harden various block independently. That prevents optimization at boundary and also cost area since macro are rectangular and blocks often harden more into blob shapes.",
      "author": {
        "id": "596068704471482370",
        "name": "246tnt",
        "discriminator": "0000",
        "nickname": "tnt",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-07_media/88d17af9d19ab43565b0c46751ef7d12-DFEE5.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1521796509765730345",
      "type": "Default",
      "timestamp": "2026-07-01T08:36:01.54+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "The only case where I see blocks hardened as macro are highly optimized ones where there was significant manual/scripted/layout/... work to make it a separate block. Something like a SRAM / memory or something like that.",
      "author": {
        "id": "596068704471482370",
        "name": "246tnt",
        "discriminator": "0000",
        "nickname": "tnt",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-07_media/88d17af9d19ab43565b0c46751ef7d12-DFEE5.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1521796581035212930",
      "type": "Default",
      "timestamp": "2026-07-01T08:36:18.532+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "Or of course analog-ish block like say a PLL.",
      "author": {
        "id": "596068704471482370",
        "name": "246tnt",
        "discriminator": "0000",
        "nickname": "tnt",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-07_media/88d17af9d19ab43565b0c46751ef7d12-DFEE5.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1521796740209184788",
      "type": "Default",
      "timestamp": "2026-07-01T08:36:56.482+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "But I wouldn't say ... harden a SPI controller independently ... that'd be a lot of headache for virtually no benefits.",
      "author": {
        "id": "596068704471482370",
        "name": "246tnt",
        "discriminator": "0000",
        "nickname": "tnt",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-07_media/88d17af9d19ab43565b0c46751ef7d12-DFEE5.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1521796837143740568",
      "type": "Default",
      "timestamp": "2026-07-01T08:37:19.593+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "Just my 2 cts ...",
      "author": {
        "id": "596068704471482370",
        "name": "246tnt",
        "discriminator": "0000",
        "nickname": "tnt",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-07_media/88d17af9d19ab43565b0c46751ef7d12-DFEE5.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1521803184941830294",
      "type": "Default",
      "timestamp": "2026-07-01T09:02:33.026+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "Thanks, appreciate the input. I'm not super familiar with this field and trying to learn. In my case, I'm studying SIMD lanes and thought to make the separate arithmetic units (say 32 of them) as I thought this is how 'real' designs are made. I had some severe congestion issues when trying to synth my top module",
      "author": {
        "id": "290925586266980352",
        "name": "osvel",
        "discriminator": "0000",
        "nickname": "Olle",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-07_media/0a78dc08258cf53bd8ec52dd3e14ef57-26F82.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1521950406056480910",
      "type": "Reply",
      "timestamp": "2026-07-01T18:47:33.275+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "I'd consider looking into the placement/partitioning tuning options in librelane for how to possibly selectively nudge the density around congested blocks to be lower and/or nudge SIMD lanes to be substantially less-overlapping.\nIf your SIMD instructions are complex enough it might be practical to force them into slices, though, to spend much more compute on optimizing a slice, afforded by then getting to just make 31 already-routed copies at no extra PnR compute for the dense intra-slice situation.",
      "author": {
        "id": "262706220073222144",
        "name": "namibj",
        "discriminator": "0000",
        "nickname": "namibj",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-07_media/f885abc0dddd0a33e4d4991b3c99091d-7ACD2.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [
        {
          "id": "290925586266980352",
          "name": "osvel",
          "discriminator": "0000",
          "nickname": "Olle",
          "color": null,
          "isBot": false,
          "roles": [],
          "avatarUrl": "2026-07_media/0a78dc08258cf53bd8ec52dd3e14ef57-26F82.png"
        }
      ],
      "reference": {
        "messageId": "1521803184941830294",
        "channelId": "1423348662318272592",
        "guildId": "1361349522684510449"
      },
      "inlineEmojis": []
    },
    {
      "id": "1521958443785650226",
      "type": "Reply",
      "timestamp": "2026-07-01T19:19:29.619+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "Right. Yeah, its basically option 2 I have been considering (slicing it into a module and instancing it 32 times). At least, that makes sense in my mind. But I understand now that this is a bit more complex than I first thought. I believe I need to specify where I/O to this 'macro' will be placed (like inputs on the left, outputs on the right), but I'm also having issues getting this to close. Well.",
      "author": {
        "id": "290925586266980352",
        "name": "osvel",
        "discriminator": "0000",
        "nickname": "Olle",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-07_media/0a78dc08258cf53bd8ec52dd3e14ef57-26F82.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [
        {
          "id": "262706220073222144",
          "name": "namibj",
          "discriminator": "0000",
          "nickname": "namibj",
          "color": null,
          "isBot": false,
          "roles": [],
          "avatarUrl": "2026-07_media/f885abc0dddd0a33e4d4991b3c99091d-7ACD2.png"
        }
      ],
      "reference": {
        "messageId": "1521950406056480910",
        "channelId": "1423348662318272592",
        "guildId": "1361349522684510449"
      },
      "inlineEmojis": []
    },
    {
      "id": "1521958470012899439",
      "type": "Default",
      "timestamp": "2026-07-01T19:19:35.872+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "Thanks for all the tips! \uD83D\uDE42",
      "author": {
        "id": "290925586266980352",
        "name": "osvel",
        "discriminator": "0000",
        "nickname": "Olle",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-07_media/0a78dc08258cf53bd8ec52dd3e14ef57-26F82.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": [
        {
          "id": "",
          "name": "\uD83D\uDE42",
          "code": "slight_smile",
          "isAnimated": false,
          "imageUrl": "2026-07_media/1f642-83E8A.svg"
        }
      ]
    },
    {
      "id": "1521988548520050688",
      "type": "Reply",
      "timestamp": "2026-07-01T21:19:07.147+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "yeah ideally you'd somehow be able to tell it just that in this region there are 32 identical slices and that they're instances for the 32-wide datapath around it, and that it has to figure out PnR inside, outside, and has to figure out how it likes the ports placed.\n\nI'd probably give it opportunity to just place the ports wherever on the grid on one side in teh small slice and just roll with what it likes best there.",
      "author": {
        "id": "262706220073222144",
        "name": "namibj",
        "discriminator": "0000",
        "nickname": "namibj",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-07_media/f885abc0dddd0a33e4d4991b3c99091d-7ACD2.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [
        {
          "id": "290925586266980352",
          "name": "osvel",
          "discriminator": "0000",
          "nickname": "Olle",
          "color": null,
          "isBot": false,
          "roles": [],
          "avatarUrl": "2026-07_media/0a78dc08258cf53bd8ec52dd3e14ef57-26F82.png"
        }
      ],
      "reference": {
        "messageId": "1521958443785650226",
        "channelId": "1423348662318272592",
        "guildId": "1361349522684510449"
      },
      "inlineEmojis": []
    },
    {
      "id": "1523236999517962380",
      "type": "Default",
      "timestamp": "2026-07-05T08:00:01.06+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": true,
      "content": "\uD83D\uDCE2 Minor update!\n\nIt turns out that the changes to the density rules have not yet been upstreamed to Open PDKs from our legacy wafer.space PDK fork. This update addresses this issue.\n\n- Project Template [1.5.7](https://github.com/wafer-space/gf180mcu-project-template/releases/tag/1.5.7)\n  - Update PDK to `d658698b`\n\n- Precheck [1.7.1](https://github.com/wafer-space/gf180mcu-precheck/releases/tag/1.7.1)\n  - Update PDK to `d658698b`\n\nThe filler generation has already considered these rules. The platform will automatically rerun the latest precheck for your designs.",
      "author": {
        "id": "323371864074485771",
        "name": "mole99",
        "discriminator": "0000",
        "nickname": "Leo Moser (mole99)",
        "color": null,
        "isBot": false,
        "roles": [
          {
            "id": "1423020172595298314",
            "name": "Mod",
            "color": null,
            "position": 4
          }
        ],
        "avatarUrl": "2026-07_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": [
        {
          "id": "",
          "name": "\uD83D\uDCE2",
          "code": "loudspeaker",
          "isAnimated": false,
          "imageUrl": "2026-07_media/1f4e2-C9D9D.svg"
        }
      ]
    },
    {
      "id": "1523237046557081650",
      "type": "ChannelPinnedMessage",
      "timestamp": "2026-07-05T08:00:12.275+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "Pinned a message.",
      "author": {
        "id": "323371864074485771",
        "name": "mole99",
        "discriminator": "0000",
        "nickname": "Leo Moser (mole99)",
        "color": null,
        "isBot": false,
        "roles": [
          {
            "id": "1423020172595298314",
            "name": "Mod",
            "color": null,
            "position": 4
          }
        ],
        "avatarUrl": "2026-07_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "reference": {
        "messageId": "1523236999517962380",
        "channelId": "1423348662318272592",
        "guildId": null
      },
      "inlineEmojis": []
    }
  ],
  "messageCount": 15
}